 % PERMUTACIONLU 
 
% [L,U]=LUPERMUTACION(A) 
% devuelve U triangular superior, L permutacion 
% por filas de una matriz triangular inferior con 
% unos en la diagonal de forma que A=L*U 
 
function [l,u]= PermutacionLU(a) 
% Datos 
% -a es una matriz nxn 
% -b es una matriz nx1 
% Resultado 
% -l es una matriz nxn triangular inferior con unos en la diagonal 
principal 
% -u es una matriz nxn triangular superior con los elementos de la 
diagonal principal distintos de cero. 
  
n=length(a); 
p=1:n;     % vector para hacer el pivotaje ficticio 
for i=1:n-1 
    [maximo,r]=max(abs(a(p(i:n),i)));r=r+i-1; 
    p([i r])=p([r i]); 
    for k=i+1:n 
        l(p(k),i)=a(p(k),i)/a(p(i),i); 
        a(p(k),i:n)=a(p(k),i:n)-l(p(k),i)*a(p(i),i:n); 
    end 
end 
for i=1:n      % Insertamos 1s en la 'diagonal' de L 
    l(p(i),i)=1; 
end 
u=a(p,:); 